<?php

include DIRETORIO."app/Models/UserDAO.php";

class C_User{
	
	protected static $lk = NULL;
	
	public static function init(){
		global $db_Mysql;

		self::$lk = $db_Mysql;
	}

	public static function getDB(){
		if(self::$lk == NUll)
			self::init();

		return self::$lk;
	}
	
	public static function login($post){
		if(count($post) > 0){
			$objUserDAO = new UserDAO(self::getDB());
			$idUser		= $objUserDAO->login($post['username'],$post['password']);

			if($idUser > 0){
				$tempObj = $objUserDAO->getUsers($idUser);
				$_SESSION["USER"] = $tempObj[0];
				return json_encode(array(true, "Login realizado com sucesso!"));
			}else{
				return json_encode(array(false,"Dados não conferem!"));
			}
		}

		return json_encode(array(false,"Não foi possível fazer o login!"));
	}

	public static function getUsers($post){
		$return = null;
		
		$id			 = (int)$post["id"];
		$all		 = (bool)$post["all"];
		$groupSimple = (bool)$post["groupSimple"];

		$objUserDAO	= new UserDAO(self::getDB());
		$objUsers	= $objUserDAO->getUsers(0,0,$all,NULL,$groupSimple);
		
		if(count($objUsers) > 0){
			$html = '<ul>';

			foreach($objUsers as $row){
				$html .= self::buildBoxUser($row);
			}

			$html .= '</ul>';
			$return[] = true;
		}else{
			$html = '<ul><li><h2>Nenhum usuário atribuido!</h2></li></ul>';
			$return[] = false;
		}
	
		$return[] = $html;	
		return json_encode($return);
	}


	public static function getUsersWithoutGroup(){
		$objUserDAO	= new UserDAO(self::getDB());
		$objUsers	= $objUserDAO->getUsersWithoutGroup();	
		
		if(count($objUsers) > 0){
			$html = '<ul>';

			foreach($objUsers as $row){
				$html .= self::buildBoxUser($row);
			}

			$html .= '</ul>';
			$return[] = true;
		}else{
			$html = '<ul><li><h2>Nenhum usuário sem grupo!</h2></li></ul>';
			$return[] = false;
		}
	
		$return[] = $html;	
		return json_encode($return);
	}
	
	public static function buildBoxUser($user){
		$objUserDAO	= new UserDAO(self::getDB());
		
		if($_SESSION["USER_PERMISSION"] == 1){
			$buttons = '<a onclick="deleteUser('.$user->id.')" href="javascript:void(0);" class="icon delete"><span>deletar</span></a>
						<a onclick="editUser('.$user->id.')" href="javascript:void(0);" class="icon edit"><span>editar</span></a>';
		}else{
			$buttons = '<a onclick="viewUser('.$user->id.')" href="javascript:void(0);" class="icon view"><span>view</span></a>';
		}

		$grupo = $user->grupo!=""?$user->grupo:"Nenhum";

		$html	= '	<li>
						<div class="user" id="user_'.$user->id.'">
							<span class="title_bar">
								<span>'.$user->name.'</span>
							</span>
							<span class="title">Grupo: '.$grupo.'<button class="expand">+</button>
							</span>
							<div class="details">
								<span>
								Login: '.$user->login.'<br>
								Email: '.$user->email.'<br>
								Carga Horária: '.$user->hourlyLoad.'<br>
								Data de Entrada: '.$user->dateCreation.'<br>
								</span>
							</div>
							<div class="buttons">'.$buttons.'</div>								
						</div>
					</li>';

		
		return $html;
	}

	public static function editUser($post){
		$return = null;
		$all		= (bool)$post["all"];
		$objUserDAO	= new UserDAO(self::getDB());
		$objUser	= $objUserDAO->getUsers((int)$post[id],0,$all,array(0,1));

		$selectStatus = '<option value="1"'.($objUser[0]->status == 1?' selected':'').'>Ativo</option>';
		$selectStatus .= '<option value="0"'.($objUser[0]->status == 0?' selected':'').'>Inativo</option>';

		$html = file_get_contents(TEMPLATES."user.html");
		$html = str_replace("[TITLE]","Editar Usuário",$html);
		$html = str_replace("[ID_USER]",$objUser[0]->id,$html);
		$html = str_replace("[NAME]",$objUser[0]->name,$html);
		$html = str_replace("[EMAIL]",$objUser[0]->email,$html);
		$html = str_replace("[LOGIN]",$objUser[0]->login,$html);
		$html = str_replace("[HOURLY_LOAD]",$objUser[0]->hourlyLoad,$html);
		$html = str_replace("[LIST_STATUS]",$selectStatus,$html);
		$html = str_replace("[DATE_CREATION]",$objUser[0]->dateCreation,$html);
		$html = str_replace("[DATE_END]",$objUser[0]->dateEnd,$html);
		$html = str_replace("[DATE_END_CLASS]",($objUser[0]->status?"hide":""),$html);
		$html = str_replace("[REQUIRED_PASS]","false",$html);

		if($html <> ""){
			$return = array(true,$html);
		}else{
			$return = array(false,"Não foi possível carregar as informações do usuário!");
		}

		return json_encode($return);
	}

	public static function viewUser($post){
		$return = null;
		$all		= (bool)$post["all"];
		$objUserDAO	= new UserDAO(self::getDB());
		$objUser	= $objUserDAO->getUsers((int)$post[id],0,$all);
		
		if($objUser[0]->status == 1)
			$selectStatus = '<option value="1">Ativo</option>';
		else
			$selectStatus = '<option value="0">Inativo</option>';

		$html = file_get_contents(TEMPLATES."viewUser.html");
		$html = str_replace("[TITLE]","Detalhes do Usuário",$html);
		$html = str_replace("[NAME]",$objUser[0]->name,$html);
		$html = str_replace("[EMAIL]",$objUser[0]->email,$html);
		$html = str_replace("[LOGIN]",$objUser[0]->login,$html);
		$html = str_replace("[HOURLY_LOAD]",$objUser[0]->hourlyLoad,$html);
		$html = str_replace("[LIST_STATUS]",$selectStatus,$html);
		$html = str_replace("[DATE_CREATION]",$objUser[0]->dateCreation,$html);
		$html = str_replace("[DATE_END]",$objUser[0]->dateEnd,$html);
		$html = str_replace("[DATE_END_CLASS]",($objUser[0]->status?"hide":""),$html);
		$html = str_replace("[REQUIRED_PASS]","false",$html);

		if($html <> ""){
			$return = array(true,$html);
		}else{
			$return = array(false,"Não foi possível carregar as informações do usuário!");
		}

		return json_encode($return);
	}

	public static function newUser($post){
		$return = null;

		$selectStatus = '<option value="1">Ativo</option>';
		$selectStatus .= '<option value="0">Inativo</option>';

		$html = file_get_contents(TEMPLATES."user.html");
		$html = str_replace("[TITLE]","Novo Usuário",$html);
		$html = str_replace("[ID_USER]",0,$html);
		$html = str_replace("[NAME]","",$html);
		$html = str_replace("[EMAIL]","",$html);
		$html = str_replace("[LOGIN]","",$html);
		$html = str_replace("[HOURLY_LOAD]","",$html);
		$html = str_replace("[LIST_STATUS]",$selectStatus,$html);
		$html = str_replace("[DATE_CREATION]",date("d/m/Y"),$html);
		$html = str_replace("[DATE_END]","",$html);
		$html = str_replace("[DATE_END_CLASS]","hide",$html);
		$html = str_replace("[REQUIRED_PASS]","true",$html);
		

		if($html <> ""){
			$return = array(true,$html);
		}else{
			$return = array(false,"Não foi possível carregar as informações do usuário!");
		}

		return json_encode($return);
	}

	public static function saveUser($post){
		$id		= 0;
		$return =  array(false,"Não foi possível salvar o usuário!");
		
		if(count($post) > 0){
			$return = self::checkUser($post);

			if($return[0]){
				$objUserDAO	= new UserDAO(self::getDB());
				$objUser	= new User();

				if($post["password"] == ""){
					unset($post["password"]);
					unset($post["repeatPassword"]);
				}

				foreach($post as $key => $value){
					if(stristr($key,"date")){
						$tempDate = explode("/",$value);
						$value = $tempDate[2]."-".$tempDate[1]."-".$tempDate[0];
					}
					$objUser->$key = $value;
				}				

				if($objUser->id > 0){
					$objUserDAO->save($objUser);
					$id = $objUser->id;
				}else{
					$id = $objUserDAO->save($objUser);					
				}

				if($id > 0){
					$return =  array(true,"<i>Usuário ". $objUser->name."</i> salvo com sucesso");

					
					if($_SESSION["USER"]->id == $id){
						$tempObj = $objUserDAO->getUsers($id);
						$_SESSION["USER"] = $tempObj[0];
					}
				}
			}
		}


		return json_encode($return);
	}

	public static function checkUser($post){
		$objUserDAO	= new UserDAO(self::getDB());
		$return[0]	= true;
		$id			= (int)$post["id"];

		if($post["password"] == $post["repeatPassword"]){
			if($post["password"] == "" && $id == 0){
				$return = array(false,"Não foi possível salvar o usuário, senha não pode ser em branco!");
			}
		}else{			
			$return = array(false,"Não foi possível salvar o usuário, senha não confere!");
		}

		if(!$objUserDAO->checkEmail($post["email"],$id))
			$return = array(false,"Não foi possível salvar o usuário, este email já esta sendo usado!");
		

		if(!$objUserDAO->checkUser($post["login"],$id))
			$return = array(false,"Não foi possível salvar o usuário, este login já esta sendo usado!");
		
		return $return;
	}

	public static function deleteUser($post){	
		$objUserDAO	= new UserDAO(self::getDB());
		$idUser		= (int)$post['id'];
		$result		= 0;

		if($idUser > 0)
			$result = $objUserDAO->deleteUser($idUser);

		if($result > 0)
			$return = array(true,"Usuário deletado com sucesso!");
		else if($result == -1)
			$return = array(false,"Erro, existem projetos vinculados a este usuário!");
		else
			$return = array(false,"Erro, não foi possível deletar o usuário!");

		return json_encode($return);
	}
}
?>